/*
 * Flowable REST API
 * # flowable / flowəb(ə)l /    - a compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.  - a lightning fast, tried and tested BPMN 2 process engine written in Java. It is Apache 2.0 licensed open source, with a committed community.  - can run embedded in a Java application, or as a service on a server, a cluster, and in the cloud. It integrates perfectly with Spring. With a rich Java and REST API, it is the ideal engine for orchestrating human or system activities.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package com.ibm.risk.irmp.workflow.client.flowable.model;

import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * HistoricProcessInstanceQueryRequest
 */

public class HistoricProcessInstanceQueryRequest {
  @JsonProperty("start")
  private Integer start = null;

  @JsonProperty("size")
  private Integer size = null;

  @JsonProperty("sort")
  private String sort = null;

  @JsonProperty("order")
  private String order = null;

  @JsonProperty("processInstanceId")
  private String processInstanceId = null;

  @JsonProperty("processInstanceIds")
  private List<String> processInstanceIds = null;

  @JsonProperty("processInstanceName")
  private String processInstanceName = null;

  @JsonProperty("processInstanceNameLike")
  private String processInstanceNameLike = null;

  @JsonProperty("processInstanceNameLikeIgnoreCase")
  private String processInstanceNameLikeIgnoreCase = null;

  @JsonProperty("processBusinessKey")
  private String processBusinessKey = null;

  @JsonProperty("processBusinessKeyLike")
  private String processBusinessKeyLike = null;

  @JsonProperty("processDefinitionId")
  private String processDefinitionId = null;

  @JsonProperty("processDefinitionKey")
  private String processDefinitionKey = null;

  @JsonProperty("processDefinitionKeyIn")
  private List<String> processDefinitionKeyIn = null;

  @JsonProperty("processDefinitionKeyNotIn")
  private List<String> processDefinitionKeyNotIn = null;

  @JsonProperty("processDefinitionName")
  private String processDefinitionName = null;

  @JsonProperty("processDefinitionVersion")
  private Integer processDefinitionVersion = null;

  @JsonProperty("processDefinitionCategory")
  private String processDefinitionCategory = null;

  @JsonProperty("deploymentId")
  private String deploymentId = null;

  @JsonProperty("deploymentIdIn")
  private List<String> deploymentIdIn = null;

  @JsonProperty("superProcessInstanceId")
  private String superProcessInstanceId = null;

  @JsonProperty("excludeSubprocesses")
  private Boolean excludeSubprocesses = null;

  @JsonProperty("finished")
  private Boolean finished = null;

  @JsonProperty("involvedUser")
  private String involvedUser = null;

  @JsonProperty("finishedAfter")
  private OffsetDateTime finishedAfter = null;

  @JsonProperty("finishedBefore")
  private OffsetDateTime finishedBefore = null;

  @JsonProperty("startedAfter")
  private OffsetDateTime startedAfter = null;

  @JsonProperty("startedBefore")
  private OffsetDateTime startedBefore = null;

  @JsonProperty("startedBy")
  private String startedBy = null;

  @JsonProperty("includeProcessVariables")
  private Boolean includeProcessVariables = null;

  @JsonProperty("variables")
  private List<QueryVariable> variables = null;

  @JsonProperty("callbackId")
  private String callbackId = null;

  @JsonProperty("callbackType")
  private String callbackType = null;

  @JsonProperty("tenantId")
  private String tenantId = null;

  @JsonProperty("tenantIdLike")
  private String tenantIdLike = null;

  @JsonProperty("withoutTenantId")
  private Boolean withoutTenantId = null;

  public HistoricProcessInstanceQueryRequest start(Integer start) {
    this.start = start;
    return this;
  }

   /**
   * Get start
   * @return start
  **/
  @ApiModelProperty(value = "")
  public Integer getStart() {
    return start;
  }

  public void setStart(Integer start) {
    this.start = start;
  }

  public HistoricProcessInstanceQueryRequest size(Integer size) {
    this.size = size;
    return this;
  }

   /**
   * Get size
   * @return size
  **/
  @ApiModelProperty(value = "")
  public Integer getSize() {
    return size;
  }

  public void setSize(Integer size) {
    this.size = size;
  }

  public HistoricProcessInstanceQueryRequest sort(String sort) {
    this.sort = sort;
    return this;
  }

   /**
   * Get sort
   * @return sort
  **/
  @ApiModelProperty(value = "")
  public String getSort() {
    return sort;
  }

  public void setSort(String sort) {
    this.sort = sort;
  }

  public HistoricProcessInstanceQueryRequest order(String order) {
    this.order = order;
    return this;
  }

   /**
   * Get order
   * @return order
  **/
  @ApiModelProperty(value = "")
  public String getOrder() {
    return order;
  }

  public void setOrder(String order) {
    this.order = order;
  }

  public HistoricProcessInstanceQueryRequest processInstanceId(String processInstanceId) {
    this.processInstanceId = processInstanceId;
    return this;
  }

   /**
   * Get processInstanceId
   * @return processInstanceId
  **/
  @ApiModelProperty(value = "")
  public String getProcessInstanceId() {
    return processInstanceId;
  }

  public void setProcessInstanceId(String processInstanceId) {
    this.processInstanceId = processInstanceId;
  }

  public HistoricProcessInstanceQueryRequest processInstanceIds(List<String> processInstanceIds) {
    this.processInstanceIds = processInstanceIds;
    return this;
  }

  public HistoricProcessInstanceQueryRequest addProcessInstanceIdsItem(String processInstanceIdsItem) {
    if (this.processInstanceIds == null) {
      this.processInstanceIds = new ArrayList<String>();
    }
    this.processInstanceIds.add(processInstanceIdsItem);
    return this;
  }

   /**
   * Get processInstanceIds
   * @return processInstanceIds
  **/
  @ApiModelProperty(value = "")
  public List<String> getProcessInstanceIds() {
    return processInstanceIds;
  }

  public void setProcessInstanceIds(List<String> processInstanceIds) {
    this.processInstanceIds = processInstanceIds;
  }

  public HistoricProcessInstanceQueryRequest processInstanceName(String processInstanceName) {
    this.processInstanceName = processInstanceName;
    return this;
  }

   /**
   * Get processInstanceName
   * @return processInstanceName
  **/
  @ApiModelProperty(value = "")
  public String getProcessInstanceName() {
    return processInstanceName;
  }

  public void setProcessInstanceName(String processInstanceName) {
    this.processInstanceName = processInstanceName;
  }

  public HistoricProcessInstanceQueryRequest processInstanceNameLike(String processInstanceNameLike) {
    this.processInstanceNameLike = processInstanceNameLike;
    return this;
  }

   /**
   * Get processInstanceNameLike
   * @return processInstanceNameLike
  **/
  @ApiModelProperty(value = "")
  public String getProcessInstanceNameLike() {
    return processInstanceNameLike;
  }

  public void setProcessInstanceNameLike(String processInstanceNameLike) {
    this.processInstanceNameLike = processInstanceNameLike;
  }

  public HistoricProcessInstanceQueryRequest processInstanceNameLikeIgnoreCase(String processInstanceNameLikeIgnoreCase) {
    this.processInstanceNameLikeIgnoreCase = processInstanceNameLikeIgnoreCase;
    return this;
  }

   /**
   * Get processInstanceNameLikeIgnoreCase
   * @return processInstanceNameLikeIgnoreCase
  **/
  @ApiModelProperty(value = "")
  public String getProcessInstanceNameLikeIgnoreCase() {
    return processInstanceNameLikeIgnoreCase;
  }

  public void setProcessInstanceNameLikeIgnoreCase(String processInstanceNameLikeIgnoreCase) {
    this.processInstanceNameLikeIgnoreCase = processInstanceNameLikeIgnoreCase;
  }

  public HistoricProcessInstanceQueryRequest processBusinessKey(String processBusinessKey) {
    this.processBusinessKey = processBusinessKey;
    return this;
  }

   /**
   * Get processBusinessKey
   * @return processBusinessKey
  **/
  @ApiModelProperty(value = "")
  public String getProcessBusinessKey() {
    return processBusinessKey;
  }

  public void setProcessBusinessKey(String processBusinessKey) {
    this.processBusinessKey = processBusinessKey;
  }

  public HistoricProcessInstanceQueryRequest processBusinessKeyLike(String processBusinessKeyLike) {
    this.processBusinessKeyLike = processBusinessKeyLike;
    return this;
  }

   /**
   * Get processBusinessKeyLike
   * @return processBusinessKeyLike
  **/
  @ApiModelProperty(value = "")
  public String getProcessBusinessKeyLike() {
    return processBusinessKeyLike;
  }

  public void setProcessBusinessKeyLike(String processBusinessKeyLike) {
    this.processBusinessKeyLike = processBusinessKeyLike;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionId(String processDefinitionId) {
    this.processDefinitionId = processDefinitionId;
    return this;
  }

   /**
   * Get processDefinitionId
   * @return processDefinitionId
  **/
  @ApiModelProperty(value = "")
  public String getProcessDefinitionId() {
    return processDefinitionId;
  }

  public void setProcessDefinitionId(String processDefinitionId) {
    this.processDefinitionId = processDefinitionId;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionKey(String processDefinitionKey) {
    this.processDefinitionKey = processDefinitionKey;
    return this;
  }

   /**
   * Get processDefinitionKey
   * @return processDefinitionKey
  **/
  @ApiModelProperty(value = "")
  public String getProcessDefinitionKey() {
    return processDefinitionKey;
  }

  public void setProcessDefinitionKey(String processDefinitionKey) {
    this.processDefinitionKey = processDefinitionKey;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionKeyIn(List<String> processDefinitionKeyIn) {
    this.processDefinitionKeyIn = processDefinitionKeyIn;
    return this;
  }

  public HistoricProcessInstanceQueryRequest addProcessDefinitionKeyInItem(String processDefinitionKeyInItem) {
    if (this.processDefinitionKeyIn == null) {
      this.processDefinitionKeyIn = new ArrayList<String>();
    }
    this.processDefinitionKeyIn.add(processDefinitionKeyInItem);
    return this;
  }

   /**
   * Get processDefinitionKeyIn
   * @return processDefinitionKeyIn
  **/
  @ApiModelProperty(value = "")
  public List<String> getProcessDefinitionKeyIn() {
    return processDefinitionKeyIn;
  }

  public void setProcessDefinitionKeyIn(List<String> processDefinitionKeyIn) {
    this.processDefinitionKeyIn = processDefinitionKeyIn;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionKeyNotIn(List<String> processDefinitionKeyNotIn) {
    this.processDefinitionKeyNotIn = processDefinitionKeyNotIn;
    return this;
  }

  public HistoricProcessInstanceQueryRequest addProcessDefinitionKeyNotInItem(String processDefinitionKeyNotInItem) {
    if (this.processDefinitionKeyNotIn == null) {
      this.processDefinitionKeyNotIn = new ArrayList<String>();
    }
    this.processDefinitionKeyNotIn.add(processDefinitionKeyNotInItem);
    return this;
  }

   /**
   * Get processDefinitionKeyNotIn
   * @return processDefinitionKeyNotIn
  **/
  @ApiModelProperty(value = "")
  public List<String> getProcessDefinitionKeyNotIn() {
    return processDefinitionKeyNotIn;
  }

  public void setProcessDefinitionKeyNotIn(List<String> processDefinitionKeyNotIn) {
    this.processDefinitionKeyNotIn = processDefinitionKeyNotIn;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionName(String processDefinitionName) {
    this.processDefinitionName = processDefinitionName;
    return this;
  }

   /**
   * Get processDefinitionName
   * @return processDefinitionName
  **/
  @ApiModelProperty(value = "")
  public String getProcessDefinitionName() {
    return processDefinitionName;
  }

  public void setProcessDefinitionName(String processDefinitionName) {
    this.processDefinitionName = processDefinitionName;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionVersion(Integer processDefinitionVersion) {
    this.processDefinitionVersion = processDefinitionVersion;
    return this;
  }

   /**
   * Get processDefinitionVersion
   * @return processDefinitionVersion
  **/
  @ApiModelProperty(value = "")
  public Integer getProcessDefinitionVersion() {
    return processDefinitionVersion;
  }

  public void setProcessDefinitionVersion(Integer processDefinitionVersion) {
    this.processDefinitionVersion = processDefinitionVersion;
  }

  public HistoricProcessInstanceQueryRequest processDefinitionCategory(String processDefinitionCategory) {
    this.processDefinitionCategory = processDefinitionCategory;
    return this;
  }

   /**
   * Get processDefinitionCategory
   * @return processDefinitionCategory
  **/
  @ApiModelProperty(value = "")
  public String getProcessDefinitionCategory() {
    return processDefinitionCategory;
  }

  public void setProcessDefinitionCategory(String processDefinitionCategory) {
    this.processDefinitionCategory = processDefinitionCategory;
  }

  public HistoricProcessInstanceQueryRequest deploymentId(String deploymentId) {
    this.deploymentId = deploymentId;
    return this;
  }

   /**
   * Get deploymentId
   * @return deploymentId
  **/
  @ApiModelProperty(value = "")
  public String getDeploymentId() {
    return deploymentId;
  }

  public void setDeploymentId(String deploymentId) {
    this.deploymentId = deploymentId;
  }

  public HistoricProcessInstanceQueryRequest deploymentIdIn(List<String> deploymentIdIn) {
    this.deploymentIdIn = deploymentIdIn;
    return this;
  }

  public HistoricProcessInstanceQueryRequest addDeploymentIdInItem(String deploymentIdInItem) {
    if (this.deploymentIdIn == null) {
      this.deploymentIdIn = new ArrayList<String>();
    }
    this.deploymentIdIn.add(deploymentIdInItem);
    return this;
  }

   /**
   * Get deploymentIdIn
   * @return deploymentIdIn
  **/
  @ApiModelProperty(value = "")
  public List<String> getDeploymentIdIn() {
    return deploymentIdIn;
  }

  public void setDeploymentIdIn(List<String> deploymentIdIn) {
    this.deploymentIdIn = deploymentIdIn;
  }

  public HistoricProcessInstanceQueryRequest superProcessInstanceId(String superProcessInstanceId) {
    this.superProcessInstanceId = superProcessInstanceId;
    return this;
  }

   /**
   * Get superProcessInstanceId
   * @return superProcessInstanceId
  **/
  @ApiModelProperty(value = "")
  public String getSuperProcessInstanceId() {
    return superProcessInstanceId;
  }

  public void setSuperProcessInstanceId(String superProcessInstanceId) {
    this.superProcessInstanceId = superProcessInstanceId;
  }

  public HistoricProcessInstanceQueryRequest excludeSubprocesses(Boolean excludeSubprocesses) {
    this.excludeSubprocesses = excludeSubprocesses;
    return this;
  }

   /**
   * Get excludeSubprocesses
   * @return excludeSubprocesses
  **/
  @ApiModelProperty(value = "")
  public Boolean getExcludeSubprocesses() {
    return excludeSubprocesses;
  }

  public void setExcludeSubprocesses(Boolean excludeSubprocesses) {
    this.excludeSubprocesses = excludeSubprocesses;
  }

  public HistoricProcessInstanceQueryRequest finished(Boolean finished) {
    this.finished = finished;
    return this;
  }

   /**
   * Get finished
   * @return finished
  **/
  @ApiModelProperty(value = "")
  public Boolean getFinished() {
    return finished;
  }

  public void setFinished(Boolean finished) {
    this.finished = finished;
  }

  public HistoricProcessInstanceQueryRequest involvedUser(String involvedUser) {
    this.involvedUser = involvedUser;
    return this;
  }

   /**
   * Get involvedUser
   * @return involvedUser
  **/
  @ApiModelProperty(value = "")
  public String getInvolvedUser() {
    return involvedUser;
  }

  public void setInvolvedUser(String involvedUser) {
    this.involvedUser = involvedUser;
  }

  public HistoricProcessInstanceQueryRequest finishedAfter(OffsetDateTime finishedAfter) {
    this.finishedAfter = finishedAfter;
    return this;
  }

   /**
   * Get finishedAfter
   * @return finishedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getFinishedAfter() {
    return finishedAfter;
  }

  public void setFinishedAfter(OffsetDateTime finishedAfter) {
    this.finishedAfter = finishedAfter;
  }

  public HistoricProcessInstanceQueryRequest finishedBefore(OffsetDateTime finishedBefore) {
    this.finishedBefore = finishedBefore;
    return this;
  }

   /**
   * Get finishedBefore
   * @return finishedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getFinishedBefore() {
    return finishedBefore;
  }

  public void setFinishedBefore(OffsetDateTime finishedBefore) {
    this.finishedBefore = finishedBefore;
  }

  public HistoricProcessInstanceQueryRequest startedAfter(OffsetDateTime startedAfter) {
    this.startedAfter = startedAfter;
    return this;
  }

   /**
   * Get startedAfter
   * @return startedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getStartedAfter() {
    return startedAfter;
  }

  public void setStartedAfter(OffsetDateTime startedAfter) {
    this.startedAfter = startedAfter;
  }

  public HistoricProcessInstanceQueryRequest startedBefore(OffsetDateTime startedBefore) {
    this.startedBefore = startedBefore;
    return this;
  }

   /**
   * Get startedBefore
   * @return startedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getStartedBefore() {
    return startedBefore;
  }

  public void setStartedBefore(OffsetDateTime startedBefore) {
    this.startedBefore = startedBefore;
  }

  public HistoricProcessInstanceQueryRequest startedBy(String startedBy) {
    this.startedBy = startedBy;
    return this;
  }

   /**
   * Get startedBy
   * @return startedBy
  **/
  @ApiModelProperty(value = "")
  public String getStartedBy() {
    return startedBy;
  }

  public void setStartedBy(String startedBy) {
    this.startedBy = startedBy;
  }

  public HistoricProcessInstanceQueryRequest includeProcessVariables(Boolean includeProcessVariables) {
    this.includeProcessVariables = includeProcessVariables;
    return this;
  }

   /**
   * Get includeProcessVariables
   * @return includeProcessVariables
  **/
  @ApiModelProperty(value = "")
  public Boolean getIncludeProcessVariables() {
    return includeProcessVariables;
  }

  public void setIncludeProcessVariables(Boolean includeProcessVariables) {
    this.includeProcessVariables = includeProcessVariables;
  }

  public HistoricProcessInstanceQueryRequest variables(List<QueryVariable> variables) {
    this.variables = variables;
    return this;
  }

  public HistoricProcessInstanceQueryRequest addVariablesItem(QueryVariable variablesItem) {
    if (this.variables == null) {
      this.variables = new ArrayList<QueryVariable>();
    }
    this.variables.add(variablesItem);
    return this;
  }

   /**
   * Get variables
   * @return variables
  **/
  @ApiModelProperty(value = "")
  public List<QueryVariable> getVariables() {
    return variables;
  }

  public void setVariables(List<QueryVariable> variables) {
    this.variables = variables;
  }

  public HistoricProcessInstanceQueryRequest callbackId(String callbackId) {
    this.callbackId = callbackId;
    return this;
  }

   /**
   * Get callbackId
   * @return callbackId
  **/
  @ApiModelProperty(value = "")
  public String getCallbackId() {
    return callbackId;
  }

  public void setCallbackId(String callbackId) {
    this.callbackId = callbackId;
  }

  public HistoricProcessInstanceQueryRequest callbackType(String callbackType) {
    this.callbackType = callbackType;
    return this;
  }

   /**
   * Get callbackType
   * @return callbackType
  **/
  @ApiModelProperty(value = "")
  public String getCallbackType() {
    return callbackType;
  }

  public void setCallbackType(String callbackType) {
    this.callbackType = callbackType;
  }

  public HistoricProcessInstanceQueryRequest tenantId(String tenantId) {
    this.tenantId = tenantId;
    return this;
  }

   /**
   * Get tenantId
   * @return tenantId
  **/
  @ApiModelProperty(value = "")
  public String getTenantId() {
    return tenantId;
  }

  public void setTenantId(String tenantId) {
    this.tenantId = tenantId;
  }

  public HistoricProcessInstanceQueryRequest tenantIdLike(String tenantIdLike) {
    this.tenantIdLike = tenantIdLike;
    return this;
  }

   /**
   * Get tenantIdLike
   * @return tenantIdLike
  **/
  @ApiModelProperty(value = "")
  public String getTenantIdLike() {
    return tenantIdLike;
  }

  public void setTenantIdLike(String tenantIdLike) {
    this.tenantIdLike = tenantIdLike;
  }

  public HistoricProcessInstanceQueryRequest withoutTenantId(Boolean withoutTenantId) {
    this.withoutTenantId = withoutTenantId;
    return this;
  }

   /**
   * Get withoutTenantId
   * @return withoutTenantId
  **/
  @ApiModelProperty(value = "")
  public Boolean getWithoutTenantId() {
    return withoutTenantId;
  }

  public void setWithoutTenantId(Boolean withoutTenantId) {
    this.withoutTenantId = withoutTenantId;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    HistoricProcessInstanceQueryRequest historicProcessInstanceQueryRequest = (HistoricProcessInstanceQueryRequest) o;
    return Objects.equals(this.start, historicProcessInstanceQueryRequest.start) &&
        Objects.equals(this.size, historicProcessInstanceQueryRequest.size) &&
        Objects.equals(this.sort, historicProcessInstanceQueryRequest.sort) &&
        Objects.equals(this.order, historicProcessInstanceQueryRequest.order) &&
        Objects.equals(this.processInstanceId, historicProcessInstanceQueryRequest.processInstanceId) &&
        Objects.equals(this.processInstanceIds, historicProcessInstanceQueryRequest.processInstanceIds) &&
        Objects.equals(this.processInstanceName, historicProcessInstanceQueryRequest.processInstanceName) &&
        Objects.equals(this.processInstanceNameLike, historicProcessInstanceQueryRequest.processInstanceNameLike) &&
        Objects.equals(this.processInstanceNameLikeIgnoreCase, historicProcessInstanceQueryRequest.processInstanceNameLikeIgnoreCase) &&
        Objects.equals(this.processBusinessKey, historicProcessInstanceQueryRequest.processBusinessKey) &&
        Objects.equals(this.processBusinessKeyLike, historicProcessInstanceQueryRequest.processBusinessKeyLike) &&
        Objects.equals(this.processDefinitionId, historicProcessInstanceQueryRequest.processDefinitionId) &&
        Objects.equals(this.processDefinitionKey, historicProcessInstanceQueryRequest.processDefinitionKey) &&
        Objects.equals(this.processDefinitionKeyIn, historicProcessInstanceQueryRequest.processDefinitionKeyIn) &&
        Objects.equals(this.processDefinitionKeyNotIn, historicProcessInstanceQueryRequest.processDefinitionKeyNotIn) &&
        Objects.equals(this.processDefinitionName, historicProcessInstanceQueryRequest.processDefinitionName) &&
        Objects.equals(this.processDefinitionVersion, historicProcessInstanceQueryRequest.processDefinitionVersion) &&
        Objects.equals(this.processDefinitionCategory, historicProcessInstanceQueryRequest.processDefinitionCategory) &&
        Objects.equals(this.deploymentId, historicProcessInstanceQueryRequest.deploymentId) &&
        Objects.equals(this.deploymentIdIn, historicProcessInstanceQueryRequest.deploymentIdIn) &&
        Objects.equals(this.superProcessInstanceId, historicProcessInstanceQueryRequest.superProcessInstanceId) &&
        Objects.equals(this.excludeSubprocesses, historicProcessInstanceQueryRequest.excludeSubprocesses) &&
        Objects.equals(this.finished, historicProcessInstanceQueryRequest.finished) &&
        Objects.equals(this.involvedUser, historicProcessInstanceQueryRequest.involvedUser) &&
        Objects.equals(this.finishedAfter, historicProcessInstanceQueryRequest.finishedAfter) &&
        Objects.equals(this.finishedBefore, historicProcessInstanceQueryRequest.finishedBefore) &&
        Objects.equals(this.startedAfter, historicProcessInstanceQueryRequest.startedAfter) &&
        Objects.equals(this.startedBefore, historicProcessInstanceQueryRequest.startedBefore) &&
        Objects.equals(this.startedBy, historicProcessInstanceQueryRequest.startedBy) &&
        Objects.equals(this.includeProcessVariables, historicProcessInstanceQueryRequest.includeProcessVariables) &&
        Objects.equals(this.variables, historicProcessInstanceQueryRequest.variables) &&
        Objects.equals(this.callbackId, historicProcessInstanceQueryRequest.callbackId) &&
        Objects.equals(this.callbackType, historicProcessInstanceQueryRequest.callbackType) &&
        Objects.equals(this.tenantId, historicProcessInstanceQueryRequest.tenantId) &&
        Objects.equals(this.tenantIdLike, historicProcessInstanceQueryRequest.tenantIdLike) &&
        Objects.equals(this.withoutTenantId, historicProcessInstanceQueryRequest.withoutTenantId);
  }

  @Override
  public int hashCode() {
    return Objects.hash(start, size, sort, order, processInstanceId, processInstanceIds, processInstanceName, processInstanceNameLike, processInstanceNameLikeIgnoreCase, processBusinessKey, processBusinessKeyLike, processDefinitionId, processDefinitionKey, processDefinitionKeyIn, processDefinitionKeyNotIn, processDefinitionName, processDefinitionVersion, processDefinitionCategory, deploymentId, deploymentIdIn, superProcessInstanceId, excludeSubprocesses, finished, involvedUser, finishedAfter, finishedBefore, startedAfter, startedBefore, startedBy, includeProcessVariables, variables, callbackId, callbackType, tenantId, tenantIdLike, withoutTenantId);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class HistoricProcessInstanceQueryRequest {\n");

    sb.append("    start: ").append(toIndentedString(start)).append("\n");
    sb.append("    size: ").append(toIndentedString(size)).append("\n");
    sb.append("    sort: ").append(toIndentedString(sort)).append("\n");
    sb.append("    order: ").append(toIndentedString(order)).append("\n");
    sb.append("    processInstanceId: ").append(toIndentedString(processInstanceId)).append("\n");
    sb.append("    processInstanceIds: ").append(toIndentedString(processInstanceIds)).append("\n");
    sb.append("    processInstanceName: ").append(toIndentedString(processInstanceName)).append("\n");
    sb.append("    processInstanceNameLike: ").append(toIndentedString(processInstanceNameLike)).append("\n");
    sb.append("    processInstanceNameLikeIgnoreCase: ").append(toIndentedString(processInstanceNameLikeIgnoreCase)).append("\n");
    sb.append("    processBusinessKey: ").append(toIndentedString(processBusinessKey)).append("\n");
    sb.append("    processBusinessKeyLike: ").append(toIndentedString(processBusinessKeyLike)).append("\n");
    sb.append("    processDefinitionId: ").append(toIndentedString(processDefinitionId)).append("\n");
    sb.append("    processDefinitionKey: ").append(toIndentedString(processDefinitionKey)).append("\n");
    sb.append("    processDefinitionKeyIn: ").append(toIndentedString(processDefinitionKeyIn)).append("\n");
    sb.append("    processDefinitionKeyNotIn: ").append(toIndentedString(processDefinitionKeyNotIn)).append("\n");
    sb.append("    processDefinitionName: ").append(toIndentedString(processDefinitionName)).append("\n");
    sb.append("    processDefinitionVersion: ").append(toIndentedString(processDefinitionVersion)).append("\n");
    sb.append("    processDefinitionCategory: ").append(toIndentedString(processDefinitionCategory)).append("\n");
    sb.append("    deploymentId: ").append(toIndentedString(deploymentId)).append("\n");
    sb.append("    deploymentIdIn: ").append(toIndentedString(deploymentIdIn)).append("\n");
    sb.append("    superProcessInstanceId: ").append(toIndentedString(superProcessInstanceId)).append("\n");
    sb.append("    excludeSubprocesses: ").append(toIndentedString(excludeSubprocesses)).append("\n");
    sb.append("    finished: ").append(toIndentedString(finished)).append("\n");
    sb.append("    involvedUser: ").append(toIndentedString(involvedUser)).append("\n");
    sb.append("    finishedAfter: ").append(toIndentedString(finishedAfter)).append("\n");
    sb.append("    finishedBefore: ").append(toIndentedString(finishedBefore)).append("\n");
    sb.append("    startedAfter: ").append(toIndentedString(startedAfter)).append("\n");
    sb.append("    startedBefore: ").append(toIndentedString(startedBefore)).append("\n");
    sb.append("    startedBy: ").append(toIndentedString(startedBy)).append("\n");
    sb.append("    includeProcessVariables: ").append(toIndentedString(includeProcessVariables)).append("\n");
    sb.append("    variables: ").append(toIndentedString(variables)).append("\n");
    sb.append("    callbackId: ").append(toIndentedString(callbackId)).append("\n");
    sb.append("    callbackType: ").append(toIndentedString(callbackType)).append("\n");
    sb.append("    tenantId: ").append(toIndentedString(tenantId)).append("\n");
    sb.append("    tenantIdLike: ").append(toIndentedString(tenantIdLike)).append("\n");
    sb.append("    withoutTenantId: ").append(toIndentedString(withoutTenantId)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}
